package com.qf.mybatis;

import com.qf.pojo.Linkman;
import com.qf.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserDao {
    //查询有几行
    Long findUser();
    //查询一个数据
    User selectUser();
    //查询一个带参数的数据
    User selectUserC(Integer id);
    //这里时查询的所有数据，只是分页方法把他定制了
    List<User> findAll();
    //根据name和age来查询数据
    List<User> findNameAndAgeSum(String name,Integer age);
    //根据注解来实现name和age来查询数据   注意注解里面是别名
    List<User> findNameAndAgeSumZJ(@Param("Paramname") String name,@Param("Paramage") Integer age);
    //用map来实现name和age查询数据   注意key是别名,value是传的值
    List<User> findNameAadAgeSumMap(Map<String,Object> map);

    //用Pojo来实现name和age查询数据   注意 传的就是对象了  只能传对象  所以使用pojo类的时候要声明parameterType="User"
    List<User> findNameAadAgeSumPojo(User user);

    //模糊查询
    List<User> findName(String name);
    //注解固定参数的使用
    int deleteUser(@Param("id") Integer id);
    //修改的使用
    int UpdateUser(User user);
    //添加的使用(两种主键回填的方式  重点)
    int InsertUser(User user);




    //别名情况下的查询    这个时候需要手动映射   rusrutmap参数，然后定义一个新的rusrutmap标签，以及返回的type对象，然后id对应标明
//    每个别名对应的真实实体类属性
    User selectUserMap(Integer id);

    //连表查询！！！
    List<Linkman> findIdAndCid();
}
